include ../common.mk

INCLUDES=../include

ULIB=\
	userlib.o\
	user_syscall.o\

UPROGS=\
	_test\

.PHONY: UPROGS ULIB clean build

%.o: %.c
	$(CC) $(CFLAGS) -I. -c $<

_%: %.o $(ULIB)
	$(LD) $(LDFLAGS) -T user.ld -o $@ $^

build: $(ULIB) $(UPROGS)

init: initcode.c
	$(CC) $(CFLAGS) -I . -I $(INCLUDES) -march=rv64g -nostdinc -c initcode.c -o initcode.o
	$(LD) $(LDFLAGS) -N -e start -Ttext 0 -o initcode.out initcode.o
	$(OBJCOPY) -S -O binary initcode.out initcode
	xxd -i initcode > ../include/proc/initcode.h
	rm -f initcode initcode.d initcode.o initcode.out

clean:
	rm -f *.o *.d _*